package com.ops.repository;

import com.ops.entity.Report;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;

/**
 * 报告数据访问接口
 */
public interface ReportRepository extends JpaRepository<Report, Long> {
    /**
     * 根据医院ID和需求年份查询报告
     * @param hospitalId 医院ID
     * @param demandYear 需求年份
     * @return 报告信息
     */
    Optional<Report> findByHospitalIdAndDemandYear(
            String hospitalId,
            String demandYear
    );

    /**
     * 根据报告UUID查询报告
     * @param reportUuid 报告UUID
     * @return 报告信息
     */
    Optional<Report> findByReportUuid(String reportUuid);
    
    /**
     * 根据医院ID和需求年份查询报告列表，按创建时间降序排序
     * @param hospitalId 医院ID
     * @param year 需求年份
     * @return 报告列表
     */
    List<Report> findByHospitalIdAndDemandYearOrderByCreateTimeDesc(String hospitalId, String year);

    /**
     * 根据医院ID查询报告列表，按创建时间降序排序
     * @param hospitalId 医院ID
     * @return 报告列表
     */
    List<Report> findByHospitalIdOrderByCreateTimeDesc(String hospitalId);

    /**
     * 根据需求年份查询报告列表，按创建时间降序排序
     * @param year 需求年份
     * @return 报告列表
     */
    List<Report> findByDemandYearOrderByCreateTimeDesc(String year);

    /**
     * 查询所有报告列表，按创建时间降序排序
     * @return 报告列表
     */
    List<Report> findAllByOrderByCreateTimeDesc();
}